package KnowSparkSQL.SQL.UDf;

import org.apache.spark.sql.AnalysisException;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

/**
 * 7.场景2：SQL风格统计学生信息
 * 统计每个学院男生的最大年龄和女生的最大年龄，并格式化输出到控制台。
 * 7.1.思路（仅供参考）
 * 1）首先读取student.json文件，
 * 得到一个DataFrame对象（Dataset<Row>类型的对象）
 * 2）调用Dataset<Row>.createTempView(xxx)方法创建一个会话临时视图
 * 3）调用SparkSession.sql(xxx)方法执行SQL语句，
 * 返回一个Dataset<Row>类型的对象
 * 4）调用Dataset<Row>.show()方法格式化显示出来
 */
public class demo {
    public static void main(String[] args) throws AnalysisException {
        SparkSession sparkSession = SparkSession.builder().appName(demo.class.getName()).master("local").getOrCreate();

        Dataset<Row> json = sparkSession.read().json("./data/student.json");

        json.createTempView("student");

        sparkSession.sql("select institute, sex, max(age), min(age) from student group by institute,sex").show();
    }
}
